import { createStore } from 'vuex'

export default createStore({
  state: {
    collapsed: false,     // 左侧 菜单 是否 处于 折叠 状态
    time: new Date().getTime(),
    userMsg: {},      // 用户基本信息
    roleList: [],       //  用户 所拥有的 角色信息
    buttonPermissionList: {},     // 用户拥有的 按钮 权限数据
    menuList: [],          // 用户拥有的 菜单
    orgAllList: [],           //  用户 全量 的 机构 数据  -- 包含 供电所 数据
    orgList: []             //  系统 中 经常 需要 使用到的 机构数据  -- 不包含供电所
  },
  mutations: {
    setCollapsed(state){
      state.collapsed = !state.collapsed

    },
    changeTime(state){
      state.time = new Date().getTime()
    },
    setButtonPermission(state, buttonPermissionList = []){
      const item = {}
      buttonPermissionList.forEach(r => {
        item[r] = ''
      })
      state.buttonPermissionList = item
    },
    setUserMsg(state, userMsg = {}){
      state.userMsg = userMsg
    },
    setMenuList(state, menuList = []){
      const list = []
      menuList.forEach(r => {
        let index = list.findIndex(f => f[0].permission === r.permission)   //如果有相同模块的
        if(index > -1){
          list[index] = list[index].concat([r])
        }else{
          list.push([r])
        }
      })

      state.menuList = list
    },
    setRoleList(state, roleList = []){
      state.roleList = roleList
    },
    setOrgAllList(state, orgAllList = []) {
      state.orgAllList = orgAllList
    },
    setOrgList(state, orgList = []) {
      state.orgList = orgList
    }
  },
  actions: {
    getBasicOrgData({
      state,
      commit,
      dispatch
    }){
      const formatOrgList = function(list = []){
        list.forEach(item => {
          const { orgGrade } = item
          if ( orgGrade === 'COUNTRY' ) {
            delete item.children // 如果 循环 到  县公司 这一层级， 就删除 县公司的  供电所数据
          } else if (item.children && item.children.length > 0) {
            formatOrgList(item.children)
          }
        })
      }
      //  获取 登录 用户 的 基础 机构 数据  --  全量 数据   包含 省、市 、县、供电所(用户所属不同机构返回数据不一样)
      $g.post('/basics/basics/org/tree', {}).then(res => {
        const { body = [] } = res
        commit('setOrgAllList', body)     //  设置 全量 的 机构 数据

        const list = $g.cloneDeep(body)
        formatOrgList(list)     //  处理 数据
        commit('setOrgList', list) //  设置  业务 场景 经常 用到 的 数据

        console.log('查看 最终 的 数据  ')
        console.log(state)

      })
    },
    getBasicData({
      state,
      commit,
      dispatch
    }, payLoad) { //  获取 系统 基础 数据

      const res = $g.post('/basics/basics/account/user', {token: $g.getToken()})

      dispatch('getBasicOrgData')

      return res
    }
  },
  modules: {
  }
})
